var app = getApp();
Page({
  data: {
    type: 1, // 1=优惠券，2=体检码（默认优惠券）
    couponCode: '', // 核销码（通用）
    hospitalId: '',
    amount: '', // 优惠券金额（仅type=1）
    isAmountValid: false, // 金额是否有效（仅type=1）
    isSubmitting: false, // 是否正在提交
    isDisabled: false, // 提交按钮是否禁用
    physicalExamInfo: {} // 体检码信息（仅type=2）
  },

  onLoad(options) {
    // 获取传递的参数
    const { code, hospitalId, type = 1 } = options;
    if (!code || !hospitalId) {
      wx.navigateBack();
      wx.showToast({ title: '参数错误', icon: 'none' });
      return;
    }

    this.setData({
      couponCode: decodeURIComponent(code),
      hospitalId,
      type: Number(type)
    });

    // 体检码需要加载详情
    if (this.data.type === 2) {
      this.getPhysicalExamDetail();
    } else {
      // 优惠券默认启用提交按钮（需金额有效）
      this.setData({ isDisabled: false });
    }
  },

  // 获取体检码详情
  getPhysicalExamDetail() {
    const { couponCode, hospitalId } = this.data;
    this.setData({ isDisabled: true }); // 加载完成前禁用提交

    app.util.request({
      url: 'Physical/getDetail', // 体检码详情接口
      method: 'GET',
      data: { code: couponCode, hospitalId },
      success: (res) => {
        if (res.data.code === 1) {
          // 成功获取体检信息
          this.setData({
            physicalExamInfo: res.data.data.order || {},
            isDisabled: false // 加载成功后启用提交
          });
        } else {
          wx.showToast({ title: res.data.msg || '获取体检信息失败', icon: 'none' });
          // 失败后3秒返回上一页
          setTimeout(() => wx.navigateBack(), 1500);
        }
      },
      fail: () => {
        wx.showToast({ title: '网络错误，请重试', icon: 'none' });
        setTimeout(() => wx.navigateBack(), 1500);
      }
    });
  },

  // 金额输入变化（仅type=1）
  onAmountChange(e) {
    if (this.data.type !== 1) return;

    const value = e.detail.value;
    // 验证金额：大于0的数字，最多两位小数
    const isValid = value && !isNaN(value) && parseFloat(value) > 0 && /^\d+(\.\d{1,2})?$/.test(value);
    
    this.setData({
      amount: value,
      isAmountValid: isValid,
      isDisabled: !isValid // 优惠券提交按钮禁用状态关联金额有效性
    });
  },

  // 取消核销
  onCancel() {
    wx.navigateBack();
  },

  // 确认核销（通用方法，区分类型处理）
  onConfirm() {
    if (this.data.isSubmitting) return;
    this.setData({ isSubmitting: true });

    const { type, couponCode, hospitalId, amount, physicalExamInfo } = this.data;
    let requestParams, apiUrl;

    if (type === 1) {
      // 优惠券核销参数
      requestParams = {
        couponCode,
        amount: parseFloat(amount),
        hospitalId
      };
      apiUrl = 'Coupon/hexiao';
    } else {
      // 体检码核销参数（使用体检信息中的唯一标识）
      requestParams = {
        examCode: couponCode,
        hospitalId,
        examId: physicalExamInfo.id // 体检记录ID（根据实际接口调整）
      };
      apiUrl = 'Physical/hexiao'; // 体检码核销接口
    }

    // 调用核销接口
    app.util.request({
      url: apiUrl,
      method: 'POST',
      data: requestParams,
      success: (res) => {
        if (res.data.data.code === 200) {
          wx.showToast({ title: '核销成功', icon: 'success' });
          wx.setStorageSync('hasNewVerificationRecord', true); // 标记新记录
          setTimeout(() => wx.navigateBack(), 1500);
        } else {
          wx.showToast({ title: res.data.data.msg || '核销失败', icon: 'none' });
        }
      },
      fail: () => {
        wx.showToast({ title: '网络错误，请重试', icon: 'none' });
      },
      complete: () => {
        this.setData({ isSubmitting: false });
      }
    });
  },

  // 格式化身份证号（中间隐藏）
  formatIdCard(idCard) {
    if (!idCard) return '';
    return idCard.replace(/^(\d{6})(\d{8})(\d{4})$/, '$1********$3');
  }
});